package com.example.ws.exception;

import com.example.ws.vo.RestResultVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 统一异常处理
 *@ControllerAdvice，增强版@Controller
 * 用于：全局异常处理/全局数据绑定/全局数据预处理
 *
 */
@ControllerAdvice
@Slf4j
public class AllExceptionHandler {
    // @ExceptionHandler用于控制类/器方法，value属性用于要指定的异常类型，可以是类/数组
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    //判断是否是定义过的已知错误，不是由未知错误代替，并记录在log
    public RestResultVo<Object> exceptionGet(Exception e) {
        String message = e.getMessage();
        log.error("接口调用异常: {}", message, e);
        return RestResultVo.failed(message);
    }

}
